package com.edu.mapper;

import com.edu.bean.User;
import org.apache.ibatis.annotations.Param;
import org.w3c.dom.stylesheets.LinkStyle;

import java.util.List;
import java.util.Map;

public interface UserMapper {
    /**
     * 根据用户ID查询用户信息
     * @param id 用户id
     * @return 用户对象
     * */
    User selectUserById(int id);
    /**
     *
     * 根据用户名和密码查询指定用户
     * @param username 用户名
     * @param password 密码
     * @return 用户对象
     * */
    User selectUserByNameAndPwd(@Param("username") String username, @Param("password") String password);
    /**
     * 添加用户
     * @param  user 对象
     * @return 1/0
     * */
    int insertUser(User user);
    /**
     * 更新用户年龄
     * @param  user 对象
     * @param age 年龄
     * @return 1/0
     * */
    int updateUser(@Param("user") User user,@Param("age") int age);
    /**
     * 根据多个年龄值查询符合条件的用户
     * @param ages 年龄
     * @return 用户列表
     * */
    List<User> selectUserByAge(int[] ages);
    /**
     * 通过用户名区间查找符合条件的用户 根据多个用户名查询用户
     * @param names 用户名
     * @return 用户列表
     * */
    List<User> selectUserByName(List<String> names);
    /**
     * 根据动态条件查询用户
     * @param map
     * @return 用户列表
     * */
    List<User> selectUserBySexAndAge(Map<String,Object> map);
    /**
     * 根据用户名模糊查询
     * @param username 用户名
     * @return 用户列表
     * */
    List<User> selectUserLikeName(String username);

    /**
     * 根据动态列名排序查询   按年龄降序排列所有用户（指定排序方式）
     * @param orderByClause 完整的ORDER BY子句
     * @param column 列名
     * @return 用户列表
     */
    List<User> selectAllUsersOrderBy(String column,String orderByClause);
    /**
     * 复杂条件查询：年龄范围 + 性别 + 用户名列表
     * @param  ages 年龄
     * @param gender 性别
     * @param usernames 用户名区间
     * @return 用户列表
     */
    List<User> selectUserByAgeAndSexAndNameColumn(@Param("ages") int[] ages,@Param("gender") String gender,@Param("usernames") List<String> usernames);
}
